/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Modelo.Proveedor;
import Modelo.Servicio;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author diegomanguia
 */
public class ControlProveedor extends Conexion {

    public ControlProveedor() {
    }

    public ArrayList<Proveedor> listar() throws SQLException {
        ArrayList<Proveedor> lista = null;
        String sql = "SELECT * FROM proveedor";
        Connection cn = conectar();
        lista = new ArrayList<>();
        PreparedStatement ps = cn.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            Proveedor obj = new Proveedor(rs.getString("pro_codigo"),
                    rs.getString("pro_empresa"),
                    rs.getString("pro_telefono"),
                    rs.getString("pro_correo"),
                    rs.getString("pro_cuidad"),//ciudad
                    rs.getString("pro_calleprincipal"),
                    rs.getString("pro_callesecundaria"),
                    rs.getString("pro_numerocasa"),
                    rs.getString("pro_nombreresponsable"));
            lista.add(obj);
        }
        desconectar(cn);

        //System.out.println(lista.toString());
        return lista;
    }

    public void insertar(String empresa, String telefono,
            String correo, String ciudad, String calleprincipal,
            String callesecundaria, String numerocasa, String nombreresponsable)
            throws SQLException {

        Connection cn = conectar();

        if (cn.getAutoCommit()) {
            cn.setAutoCommit(false);
        }
        PreparedStatement ps = cn.prepareStatement("INSERT INTO "
                + "proveedor("
                + " pro_empresa, pro_telefono,pro_correo,"
                + " pro_cuidad,pro_calleprincipal,"
                + " pro_callesecundaria,pro_numerocasa,pro_nombreresponsable)"
                + "VALUES (?,?,?,?,?,?,?,?) ");
        ps.setString(1, empresa);
        ps.setString(2, telefono);
        ps.setString(3, correo);
        ps.setString(4, ciudad);
        ps.setString(5, calleprincipal);
        ps.setString(6, callesecundaria);
        ps.setString(7, numerocasa);
        ps.setString(8, nombreresponsable);

        int a = ps.executeUpdate();

        if (a >= 1) {

            System.out.println("Proveedor Registrado Correctamente");
            cn.commit();
        }

    }

    public void eliminar(Integer cod) throws SQLException {
        Connection cn = conectar();
        ControlProdServ c = new ControlProdServ();
        c.eliminarProdProv(cod);
        PreparedStatement ps = cn.prepareStatement("Delete from proveedor where pro_codigo=?");
        ps.setInt(1, cod);
        int num = ps.executeUpdate();
        if (num != 0) {
            //JOptionPane.showMessageDialog(null, "eliminado");
        }
    }

    public void eliminar(String empresa) throws SQLException {
        Connection cn = conectar();
        PreparedStatement ps = cn.prepareStatement("Delete from proveedor where pro_empresa=?");
        ps.setString(1, empresa);
        int num = ps.executeUpdate();
        if (num != 0) {
            //JOptionPane.showMessageDialog(null, "eliminado");
            System.out.println("Eliminando:" + empresa);
        }
    }

    public Proveedor buscarProveedor(String empresa) throws SQLException {
        Proveedor prov = null;
        String sql = "SELECT * FROM proveedor WHERE pro_empresa=?";
        Connection cn = conectar();
        PreparedStatement ps = cn.prepareStatement(sql);
        ps.setString(1, empresa);
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            Proveedor obj = new Proveedor(rs.getString("pro_codigo"),
                    rs.getString("pro_empresa"),
                    rs.getString("pro_telefono"),
                    rs.getString("pro_correo"),
                    rs.getString("pro_cuidad"),//ciudad
                    rs.getString("pro_calleprincipal"),
                    rs.getString("pro_callesecundaria"),
                    rs.getString("pro_numerocasa"),
                    rs.getString("pro_nombreresponsable"));
            prov = obj;
        }
        desconectar(cn);

        //System.out.println(lista.toString());
        return prov;
    }

    public void actualizar(String cod, String empresa, String telefono,
            String correo, String ciudad, String calleprincipal,
            String callesecundaria, String numerocasa,
            String nombreresponsable) throws SQLException {

        Connection cn = conectar();

        if (cn.getAutoCommit()) {
            cn.setAutoCommit(false);
        }

        PreparedStatement ps = cn.prepareStatement("UPDATE  proveedor SET  "
                + " pro_empresa=?, pro_telefono=?,pro_correo=?,"
                + " pro_cuidad=?,pro_calleprincipal=?,"
                + " pro_callesecundaria=?,pro_numerocasa=?,"
                + " pro_nombreresponsable=?"
                + "WHERE pro_codigo=?");

        ps.setString(1, empresa);
        ps.setString(2, telefono);
        ps.setString(3, correo);
        ps.setString(4, ciudad);
        ps.setString(5, calleprincipal);
        ps.setString(6, callesecundaria);
        ps.setString(7, numerocasa);
        ps.setString(8, nombreresponsable);
        ps.setString(9, cod);

        int a = ps.executeUpdate();

        if (a >= 1) {

            System.out.println("Proveedor Actualizado Correctamente");
            cn.commit();
        }

    }

}
